Amazon Connectの問い合わせイベントは、まれにAmazon EventBridgeに送信されない場合があります
困っていること
Amazon Connectの問い合わせイベントがAmazon EventBridgeに送信されないことがあります。
EventBridgeでは以下のイベントパターンを設定しています。
この設定により、Connectフロー内の[コンタクト属性の設定]ブロックでユーザー定義の属性が保存または更新された際に、EventBridgeがターゲットをトリガーする仕組みです。
{
"source": ["aws.connect"],
"detail-type": ["Amazon Connect Contact Event"],
"detail": {
"eventType": ["CONTACT_DATA_UPDATED"],
"instanceArn": [
"arn:aws:connect:ap-northeast-1:123456789012:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c"
],
"updatedProperties": ["UserDefinedAttributes"]
}
}
上記の条件を満たしていても、EventBridgeが発火しない場合があります。
その際、EventBridgeのAmazon CloudWatchメトリクスを確認すると、イベントパターンに一致したイベントの数(MatchedEvents
)が0であることが確認されました。
結論
Amazon Connectの問い合わせイベントは基本的にEventBridgeに送信されますが、ベストエフォート方式であるため、まれに配信されない場合があります。
イベントは、ベストエフォートベースで出力されます。
https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/contact-events.html#subscribe-contact-events
Amazon Connect Best effort
https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html
コンタクト属性の保存や更新などの問い合わせイベントを確実に処理したい場合、以下の2つの方法をご検討ください。
1つ目
問い合わせレコードにはコンタクト属性が含まれています。そのため、問い合わせレコードをAmazon Kinesis Data Streamsでストリーミングし、Kinesis Data Streamsの配信先で処理を行う方法があります。
ただし、重複して配信される可能性がある点にはご注意ください。
Amazon Connect は、少なくとも 1 回問い合わせレコードを配信します。
問い合わせレコードは、最初の配信後に新しい情報が到着するなど、複数の理由で再度配信される場合があります。
https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/ctr-data-model.html#important-things-to-know-ctr-data-model
ConnectでKinesis Data Streamsを使用して問い合わせレコードをストリーミングする方法については、以下の公式ドキュメントをご参照ください。
2つ目
Connectフローで[コンタクト属性の設定]ブロックの後に[AWS Lambda関数を呼び出す]ブロックを追加し、Lambda関数で処理を行う方法があります。
[AWS Lambda関数を呼び出す]ブロックでLambdaを呼び出す場合、タイムアウトが最大8秒間である点に注意が必要です。タイムアウトが発生しても問題のない非同期処理であれば問題ありませんが、Lambdaで処理した内容を後続のフローで利用する場合は、タイムアウトに注意してください。